﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web;
using vudu.ClasesDominio;
using vudu.Logica.Excepciones;
using vudu.Logica.Fachada;
using vudu.Presentacion.Contrato.VU_13_Gestionar_Horarios;

namespace vudu.Presentacion.Presentador.VU_13_Gestionar_Horarios
{
    public class PresentadorAprobarPrematricula1
    {
        #region Variables
        private IContratoAprobarPrematricula1 _vista;
        private EnlaceLogico _fachada = new EnlaceLogico();
        private List<Prematricula> _misPrematriculas = new List<Prematricula>();
        private Estudiante estudiante;
        private const string CabeceraError = "Operacion Fallida: ";
        private const string OperacionExitosa = "La prematricula fue aprobada correctamente.";
        #endregion

        public PresentadorAprobarPrematricula1( IContratoAprobarPrematricula1 vista , int idEstudiante, EnlaceLogico fachada)
        {
            _vista = vista;
            _fachada = fachada;
            Escuela escuela = (Escuela)_fachada.RolActual;
            estudiante = new Estudiante();
            estudiante.IdEst = idEstudiante;
            PageLoad();
            _vista.UxInformacionEstudiante.Text = escuela.NombreEscuela;
        }

        public void PageLoad()
        {
            try
            {
                _misPrematriculas = _fachada.ConsultarPrematriculas(estudiante);
                CargarTabla();
            }
            catch (ConsultaPrematriculasException e)
            {
                _vista.UxMensajeDeTransaccion.Text = CabeceraError + e.Message;
                _vista.UxMensajeDeTransaccion.Visible = true;
            }
            catch (ConexionExeption e)
            {
                _vista.UxMensajeDeTransaccion.Text = CabeceraError + e.Message;
                _vista.UxMensajeDeTransaccion.Visible = true;
            }
            finally
            {
                _vista.UxMensajeDeTransaccion.CssClass = "transaccionFallida";
            }
        }

        public void CargarTabla()
        {
            DataTable tabla = new DataTable();
            tabla.Columns.Add("Fecha", typeof(string));
            tabla.Columns.Add("Nombre Prematricula", typeof(string));
            foreach (Prematricula prematricula in _misPrematriculas)
            {
                if (prematricula != null)
                {
                    tabla.Rows.Add(prematricula.Fecha.ToString().Split(' ')[0], prematricula.Nombre);
                }
            }
            _vista.UxListasPrematriculas.DataSource = tabla;
            _vista.UxListasPrematriculas.DataBind();
        }

        public int SeleccionoConsultar()
        {
            int seleccion = (_vista.UxListasPrematriculas.PageIndex * 8) + _vista.UxListasPrematriculas.SelectedIndex;
            Prematricula prematricula = _misPrematriculas.ElementAt(seleccion);
            prematricula.Estudiante.IdEst = estudiante.IdEst;
            seleccion = prematricula.Codigo;
            _fachada.AprobarPrematricula(prematricula);
            _vista.UxListasPrematriculas.Visible = false;
            _vista.UxMensajeDeTransaccion.Text = OperacionExitosa;
            _vista.UxMensajeDeTransaccion.Visible = true;
            _vista.UxMensajeDeTransaccion.CssClass = "transaccionExitosa";
            _vista.UxVolver.Visible = true;
            return seleccion;
        }
    }
}